proc-macro-error3 3.0.2

Almost drop-in replacement to panics in proc-macros
Documentation
on:
  pull_request:
  push:

jobs:
  deny:
    name: Check dependencies
    runs-on: ubuntu-latest
    strategy:
      matrix:
        checks:
          - "--deny warnings advisories"
          - bans licenses sources
    steps:
      - uses: actions/checkout@v6
      - uses: EmbarkStudios/cargo-deny-action@v2
        with:
          command: check ${{ matrix.checks }}

  minimal_versions:
    name: Check minimal version requirements of dependencies
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        toolchain:
          - stable
          - nightly
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
      - uses: Swatinem/rust-cache@v2
        with:
          cache-bin: false
          key: ${{ matrix.toolchain }}
      - uses: taiki-e/install-action@cargo-hack
      - uses: taiki-e/install-action@cargo-minimal-versions
      - uses: taiki-e/install-action@just
      - name: Check build with minimal versions
        run: just minimal-versions

  format:
    name: Check format and spelling
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rustfmt
      - uses: Swatinem/rust-cache@v2
        with:
          cache-bin: false
      - uses: taiki-e/install-action@just
      - uses: taiki-e/install-action@taplo
      - run: just check-fmt-all

  lint:
    name: Run lints
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - toolchain: stable
            recipe: lint
          - toolchain: "1.61.0"
            recipe: lint-msrv
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: clippy
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
          components: clippy
      - uses: Swatinem/rust-cache@v2
        with:
          cache-bin: false
          key: ${{ matrix.toolchain }}
      - uses: taiki-e/install-action@just
      - run: just update-dependencies
      - run: just ${{ matrix.recipe }}

  test:
    runs-on: ubuntu-latest
    needs: [deny, minimal_versions, format, lint]
    strategy:
      matrix:
        toolchain: ["stable", "beta", "nightly"]
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
      - uses: Swatinem/rust-cache@v2
        with:
          cache-bin: false
          key: ${{ matrix.toolchain }}
      - run: cargo test --all
      - run: cargo test --all --features nightly
        if: matrix.toolchain == 'nightly'

  ui-test:
    runs-on: ubuntu-latest
    needs: [deny, minimal_versions, format, lint]
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          cache-bin: false
      - run: cargo test --features __ui_tests ui