Add Ada / SPARK language support via AdaCore Ada Language Server (#1461)

Introduces Language.ADA backed by AdaCore's Ada Language Server (ALS),
the standard LSP-compliant server for Ada — and SPARK, since both share
the .ads/.adb file extensions and ALS distinguishes SPARK by source-level
pragmas/aspects rather than by file type.

ALS is auto-downloaded from AdaCore's GitHub releases (linux-x64/arm64,
darwin-x64/arm64, win32-x64) using the LanguageServerDependencyProviderSinglePath
pattern, with SHA256 verification per-platform. Users can override the
downloaded binary by setting ls_specific_settings.ada.ls_path to a
pre-installed ada_language_server (e.g. from Alire, GNAT Studio, or the
VS Code Ada extension).

Test repo is a minimal multi-file GNAT project (default.gpr, helper.ads,
helper.adb, main.adb). Tests modelled on test_php_basic.py: ls_running,
find_definition (within/across), find_references (within/across),
find_symbol, document_symbols, hierarchical document symbols,
bare-symbol-name sanity check.
This commit is contained in:
Vitalijs Kuprins authored and GitHub committed 2026-05-09 17:49:12 +02:00
1 parent ab98ea6762
commit 249f6b07f9
16 files changed
+454 -2

No files matched your search

@@ -28,6 +28,13 @@ or at least freely available for use.
We currently provide direct, out-of-the-box support for the programming languages listed below.
Some languages require additional installations or setup steps, as noted.
* **Ada / SPARK**
(uses AdaCore's [Ada Language Server (ALS)](https://github.com/AdaCore/ada_language_server),
automatically downloaded; supports `.ads`, `.adb`, and `.ada` files;
works best with a `.gpr` GNAT project file at the repository root;
SPARK is handled by the same server transparently — set language `ada` for both.
To use a pre-installed ALS (e.g. from Alire, GNAT Studio, or the VS Code Ada extension),
set `ls_specific_settings.ada.ls_path`.)
* **AL**
* **Angular**
(experimental; requires Node.js + npm, plus `npm install` having been run in the project root so that `@angular/core`