# Please make sure that the `needs` field for the `conclusion` job
# are updated when adding new jobs!

name: CI
on:
  pull_request:
  merge_group:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  CARGO_INCREMENTAL: 0
  CARGO_NET_RETRY: 10
  CI: 1
  RUST_BACKTRACE: short
  RUSTUP_MAX_RETRIES: 10
  RUSTFLAGS: "-D warnings -W unreachable-pub --cfg no_salsa_async_drops"

defaults:
  run:
    shell: bash

jobs:
  changes:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: read
    outputs:
      typescript: ${{ steps.filter.outputs.typescript }}
    steps:
      - uses: actions/checkout@v6
      - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
        id: filter
        with:
          filters: |
            typescript:
              - 'editors/code/**'

  proc-macro-srv:
    if: github.repository == 'rust-lang/rust-analyzer'
    name: proc-macro-srv
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Install rustup-toolchain-install-master
        run: cargo install rustup-toolchain-install-master@1.11.0

      # Install a pinned rustc commit to avoid surprises
      - name: Install Rust toolchain
        run: |
          RUSTC_VERSION=$(cat rust-version)
          rustup-toolchain-install-master ${RUSTC_VERSION} -c cargo -c rust-src -c rustfmt -c rustc-dev -c llvm-tools
          rustup default ${RUSTC_VERSION}

      # Emulate a nightly toolchain, because the toolchain installed above does not have "nightly"
      # in its version string.
      - name: Emulate a nightly toolchain
        run: echo "RUSTC_BOOTSTRAP=1" >> $GITHUB_ENV

      # https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
      - name: Install Rust Problem Matcher
        run: echo "::add-matcher::.github/rust.json"

      - name: Test
        run: cargo test --features in-rust-tree -p proc-macro-srv -p proc-macro-srv-cli -p proc-macro-api -- --quiet

      - name: Check salsa dependency
        run: "! (cargo tree -p proc-macro-srv-cli -p proc-macro-srv -p proc-macro-srv-cli -p proc-macro-api -i salsa)"

  rust:
    if: github.repository == 'rust-lang/rust-analyzer'
    name: Rust
    runs-on: ${{ matrix.os }}
    env:
      CC: deny_c

    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add --toolchain stable rust-src rustfmt
          # We also install a nightly rustfmt, because we use `--file-lines` in
          # a test.
          rustup toolchain install nightly --profile minimal --component rustfmt
      # https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
      - name: Install Rust Problem Matcher
        if: matrix.os == 'macos-latest'
        run: echo "::add-matcher::.github/rust.json"

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6
      #   with:
      #     workspaces: |
      #       . -> target
      #       ./crates/proc-macro-srv/proc-macro-test/imp -> target

      - name: Install nextest
        uses: taiki-e/install-action@nextest

      - name: Codegen checks (rust-analyzer)
        if: matrix.os == 'ubuntu-latest'
        run: cargo codegen --check

      - name: Run tests
        run: cargo nextest run --no-fail-fast --hide-progress-bar

      - name: Install cargo-machete
        uses: taiki-e/install-action@cargo-machete

      - name: Run cargo-machete
        run: cargo machete

  analysis-stats:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest
    env:
      RUSTC_BOOTSTRAP: 1

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add rustfmt

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6

      - name: Bump opt-level
        run: sed -i '/\[profile.dev]/a opt-level=1' Cargo.toml

      - run: cargo build -p rust-analyzer

      - name: ./rust-analyzer
        run: ./target/debug/rust-analyzer analysis-stats . -q

      - name: sysroot/lib/rustlib/src/rust/library/
        run: ./target/debug/rust-analyzer analysis-stats --with-deps --no-sysroot --no-test $(rustc --print sysroot)/lib/rustlib/src/rust/library/ -q

  rustfmt:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add rustfmt

      - run: cargo fmt -- --check

  clippy:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      # Note that clippy output is currently dependent on whether rust-src is installed,
      # https://github.com/rust-lang/rust-clippy/issues/14625
      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add --toolchain stable rust-src clippy

      # https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
      - name: Install Rust Problem Matcher
        run: echo "::add-matcher::.github/rust.json"

      - run: cargo clippy --all-targets -- -D clippy::disallowed_macros -D clippy::dbg_macro -D clippy::todo -D clippy::print_stdout -D clippy::print_stderr

  miri:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Rust toolchain
        run: |
          # FIXME: Pin nightly due to a regression in miri on nightly-2026-02-12.
          # See https://github.com/rust-lang/miri/issues/4855.
          # Revert to plain `nightly` once this is fixed upstream.
          rustup toolchain install nightly-2026-02-10
          rustup default nightly-2026-02-10
          rustup component add miri

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6

      - run: cargo miri test -p intern

  # Weird targets to catch non-portable code
  rust-cross:
    if: github.repository == 'rust-lang/rust-analyzer'
    name: Rust Cross
    runs-on: ubuntu-latest

    strategy:
      matrix:
        target: [powerpc-unknown-linux-gnu, x86_64-unknown-linux-musl, wasm32-unknown-unknown]
        include:
          # The rust-analyzer binary is not expected to compile on WASM, but the IDE
          # crate should
          - target: wasm32-unknown-unknown
            ide-only: true

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup target add ${{ matrix.target }}

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6

      - run: cargo check --target=${{ matrix.target }} --all-targets -p ide
        if: ${{ matrix.ide-only }}
      - run: cargo check --target=${{ matrix.target }} --all-targets
        if: ${{ !matrix.ide-only }}

  typescript:
    needs: changes
    if: github.repository == 'rust-lang/rust-analyzer' && needs.changes.outputs.typescript == 'true'
    name: TypeScript
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]

    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Nodejs
        uses: actions/setup-node@v6
        with:
          node-version: 22

      - name: Install xvfb
        if: matrix.os == 'ubuntu-latest'
        run: sudo apt-get install -y xvfb

      - run: npm ci
        working-directory: ./editors/code

      #    - run: npm audit || { sleep 10 && npm audit; } || { sleep 30 && npm audit; }
      #      if: runner.os == 'Linux'
      #      working-directory: ./editors/code

      # If this steps fails, your code's type integrity might be wrong at some places at TypeScript level.
      - run: npm run typecheck
        working-directory: ./editors/code

      # You may fix the code automatically by running `npm run lint:fix` if this steps fails.
      - run: npm run lint
        working-directory: ./editors/code

      # To fix this steps, please run `npm run format`.
      - run: npm run format:check
        working-directory: ./editors/code

      - name: Run VS Code tests (Linux)
        if: matrix.os == 'ubuntu-latest'
        env:
          VSCODE_CLI: 1
        run: xvfb-run npm test
        working-directory: ./editors/code

      - name: Run VS Code tests (Windows)
        if: matrix.os == 'windows-latest'
        env:
          VSCODE_CLI: 1
        run: npm test
        working-directory: ./editors/code

      - run: npm run package --scripts-prepend-node-path
        working-directory: ./editors/code

  typo-check:
    name: Typo Check
    runs-on: ubuntu-latest
    timeout-minutes: 10
    env:
      FORCE_COLOR: 1
      TYPOS_VERSION: v1.38.1
    steps:
      - name: download typos
        run: curl -LsSf https://github.com/crate-ci/typos/releases/download/$TYPOS_VERSION/typos-$TYPOS_VERSION-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin

      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: check for typos
        run: typos

  conclusion:
    needs:
      [
        rust,
        rust-cross,
        typescript,
        typo-check,
        proc-macro-srv,
        miri,
        rustfmt,
        clippy,
        analysis-stats,
      ]
    # We need to ensure this job does *not* get skipped if its dependencies fail,
    # because a skipped job is considered a success by GitHub. So we have to
    # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
    # when the workflow is canceled manually.
    #
    # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
    if: ${{ !cancelled() }}
    runs-on: ubuntu-latest
    steps:
      # Manually check the status of all dependencies. `if: failure()` does not work.
      - name: Conclusion
        run: |
          # Print the dependent jobs to see them in the CI log
          jq -C <<< '${{ toJson(needs) }}'
          # Check if all jobs that we depend on (in the needs array) were successful (or have been skipped).
          jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}'

  cancel-if-matrix-failed:
    needs: rust
    if: ${{ always() }}
    runs-on: ubuntu-latest
    steps:
      - name: Cancel parallel jobs
        run: |
          if jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}'; then
            exit 0
          fi
          # https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#cancel-a-workflow-run
          curl -L \
          -X POST \
          -H "Accept: application/vnd.github.v3+json" \
          -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/cancel
