# 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

jobs:
  changes:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: read
    outputs:
      typescript: ${{ steps.filter.outputs.typescript }}
    steps:
      - uses: actions/checkout@v4
      - uses: dorny/paths-filter@1441771bbfdd59dcd748680ee64ebd8faab1a242
        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
    env:
      RUSTFLAGS: "-D warnings"

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

      - name: Install rustup-toolchain-install-master
        run: cargo install rustup-toolchain-install-master@1.6.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 rust-src -c rustfmt
          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 sysroot-abi -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 | grep -q salsa)"

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

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

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        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 clippy
          # We always use a nightly rustfmt, regardless of channel, because we need
          # --file-lines.
          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 == 'ubuntu-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: Compile tests
        run: cargo test --no-run

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

      - name: Cancel parallel jobs
        if: failure()
        run: |
          # 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

      - name: Run Clippy
        if: matrix.os == 'macos-latest'
        run: cargo clippy --all-targets -- -D clippy::disallowed_macros -D clippy::dbg_macro -D clippy::todo -D clippy::print_stdout -D clippy::print_stderr

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

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

      - 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@v4

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

      - run: cargo fmt -- --check

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

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

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update nightly
          rustup default nightly
          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
    env:
      RUSTFLAGS: "-Dwarnings"

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

      - 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@v4

      - name: Install Nodejs
        uses: actions/setup-node@v4
        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.28.3
    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@v4
        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, 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) }}'
