Skip to content

Inlay hints: variable types + parameter names (TypeHints facade) #1543

Inlay hints: variable types + parameter names (TypeHints facade)

Inlay hints: variable types + parameter names (TypeHints facade) #1543

Workflow file for this run

name: CI
on:
pull_request:
branches:
- master
push:
branches:
- master
jobs:
# Release gate: absolute local path dependencies must never ship. The
# elixir_sense dependency is a git pin (dep_versions.exs), so this job
# hard-fails on any reintroduction of a local path dep.
release-gate:
name: Reject absolute path deps (release gate)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Check for absolute local path dependencies
run: |
! grep -rn 'path: "/' --include=mix.exs --include=mix.lock .
# Smoke test on the highest supported OTP for each Elixir version
smoke_test_language_server:
name: Smoke test language server (Elixir ${{matrix.elixir}} | OTP ${{matrix.otp}})
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- elixir: 1.16.x
otp: 26.x
- elixir: 1.17.x
otp: 27.x
- elixir: 1.18.x
otp: 27.x
- elixir: 1.19.x
otp: 28.x
- elixir: 1.20.x
otp: 29.x
steps:
- uses: actions/checkout@v6
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
- name: Cache dependencies
uses: actions/cache@v5
with:
path: |
_build
deps
key: ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-
- name: Install Dependencies
run: |
mix local.hex --force
mix local.rebar --force
mix deps.get --only test
- run: |
cd apps/elixir_ls_utils
mix test
- run: |
cd apps/language_server
mix test
smoke_test_debug_adapter:
name: Smoke test debug adapter (Elixir ${{matrix.elixir}} | OTP ${{matrix.otp}})
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- elixir: 1.16.x
otp: 26.x
- elixir: 1.17.x
otp: 27.x
- elixir: 1.18.x
otp: 27.x
- elixir: 1.19.x
otp: 28.x
- elixir: 1.20.x
otp: 29.x
steps:
- uses: actions/checkout@v6
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
- name: Cache dependencies
uses: actions/cache@v5
with:
path: |
_build
deps
key: ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-
- name: Install Dependencies
run: |
mix local.hex --force
mix local.rebar --force
mix deps.get --only test
- run: |
cd apps/elixir_ls_utils
mix test
- run: |
cd apps/debug_adapter
mix test
# Compatibility test: lowest supported OTP for each Elixir, on Linux and Windows
compatibility_test:
name: Compatibility test (Elixir ${{matrix.elixir}} | OTP ${{matrix.otp}} | ${{matrix.os}})
runs-on: ${{matrix.os}}
needs: [smoke_test_language_server, smoke_test_debug_adapter]
strategy:
fail-fast: false
matrix:
include:
# Minimum OTP for each supported Elixir
- elixir: 1.16.x
otp: 26.x
os: ubuntu-22.04
- elixir: 1.16.x
otp: 26.x
os: windows-2022
- elixir: 1.17.x
otp: 26.x
os: ubuntu-22.04
- elixir: 1.17.x
otp: 26.x
os: windows-2022
- elixir: 1.18.x
otp: 26.x
os: ubuntu-22.04
- elixir: 1.18.x
otp: 26.x
os: windows-2022
- elixir: 1.19.x
otp: 26.x
os: ubuntu-22.04
- elixir: 1.19.x
otp: 26.x
os: windows-2022
- elixir: 1.20.x
otp: 27.x
os: ubuntu-22.04
- elixir: 1.20.x
otp: 27.x
os: windows-2022
# Highest OTP on Windows (Linux is covered by smoke_test)
- elixir: 1.20.x
otp: 29.x
os: windows-2022
env:
MIX_ENV: test
steps:
- name: Set git to use original line ending (Windows)
if: runner.os == 'Windows'
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
- name: Cache dependencies
uses: actions/cache@v5
with:
path: |
_build
deps
key: ${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ runner.os }}-mix-${{ matrix.elixir }}-${{ matrix.otp }}-
- name: Install Dependencies
run: |
mix local.hex --force
mix local.rebar --force
mix deps.get --only test
- run: mix test
static_analysis:
name: Static analysis
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: erlef/setup-beam@v1
with:
otp-version: 29.x
elixir-version: 1.20.x
- name: Cache build artifacts
uses: actions/cache@v5
with:
path: |
~/.hex
~/.mix
_build
deps
key: static-analysis-${{ hashFiles('**/mix.lock') }}
restore-keys: |
static-analysis-
- name: Install Dependencies
run: |
mix local.hex --force
mix local.rebar --force
mix deps.get
- name: Restore timestamps to prevent unnecessary recompilation
run: IFS=$'\n'; for f in $(git ls-files); do touch -d "$(git log -n 1 --pretty='%cI' -- $f)" "$f"; done
- name: Compile with warnings as errors
run: mix compile --force --warnings-as-errors
- run: MIX_ENV=test mix format --check-formatted
- run: cd apps/language_server && MIX_ENV=test mix format --check-formatted
- run: mix dialyzer