From a636b98719c8bb722ae9cd543bcc11bc353acdf1 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 10 Oct 2025 11:54:55 +0100 Subject: [PATCH] update .NET version, add F# integration test --- .github/workflows/pytest.yml | 4 ++++ CHANGELOG.md | 2 +- src/solidlsp/language_servers/fsharp_language_server.py | 5 ++++- test/serena/test_serena_agent.py | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 0ab82056..ab7e74ca 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -78,6 +78,10 @@ jobs: with: distribution: 'temurin' java-version: '17' + - name: Setup .NET SDK (for F# and C# languages) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' - name: Install Terraform uses: hashicorp/setup-terraform@v3 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 69ef9a7f..4b70df71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Status of the `main` branch. Changes prior to the next official version change will appear here. * Language support: - * **Add support for F#** via FsAutoComplete/Ionide LSP server. Requires .NET SDK 6.0 or later with comprehensive support for F# language features, type checking, and cross-file analysis. + * **Add support for F#** via FsAutoComplete/Ionide LSP server. * **Add support for AL (Application Language)** for Microsoft Dynamics 365 Business Central development. Requires VS Code AL extension (ms-dynamics-smb.al). * **Add support for R** via the R languageserver package with LSP integration, performance optimizations, and fallback symbol extraction * **Add support for Zig** via ZLS (cross-file references may not fully work on Windows) diff --git a/src/solidlsp/language_servers/fsharp_language_server.py b/src/solidlsp/language_servers/fsharp_language_server.py index 55c526ec..e436f230 100644 --- a/src/solidlsp/language_servers/fsharp_language_server.py +++ b/src/solidlsp/language_servers/fsharp_language_server.py @@ -1,5 +1,8 @@ """ -Provides F# specific instantiation of the LanguageServer class using Ionide LSP. +Provides F# specific instantiation of the LanguageServer class usi if not dotnet_path: + raise RuntimeError( + ".NET SDK is not installed or not in PATH. Please install .NET SDK 8.0 or later and ensure 'dotnet' is in your PATH." + )onide LSP. Contains various configurations and settings specific to F# development. """ diff --git a/test/serena/test_serena_agent.py b/test/serena/test_serena_agent.py index 4f067ffb..92d7a588 100644 --- a/test/serena/test_serena_agent.py +++ b/test/serena/test_serena_agent.py @@ -29,6 +29,7 @@ def serena_config(): Language.PHP, Language.CSHARP, Language.CLOJURE, + Language.FSHARP, ]: repo_path = get_repo_path(language) if repo_path.exists(): @@ -80,6 +81,7 @@ class TestSerenaAgent: marks=[pytest.mark.clojure, pytest.mark.skipif(clj.CLI_FAIL, reason=f"Clojure CLI not available: {clj.CLI_FAIL}")], ), pytest.param(Language.CSHARP, "Calculator", "Class", "Program.cs", marks=pytest.mark.csharp), + pytest.param(Language.FSHARP, "Calculator", "Module", "Calculator.fs", marks=pytest.mark.fsharp), ], indirect=["serena_agent"], ) @@ -130,6 +132,7 @@ class TestSerenaAgent: marks=[pytest.mark.clojure, pytest.mark.skipif(clj.CLI_FAIL, reason=f"Clojure CLI not available: {clj.CLI_FAIL}")], ), pytest.param(Language.CSHARP, "Calculator", "Program.cs", "Program.cs", marks=pytest.mark.csharp), + pytest.param(Language.FSHARP, "add", "Calculator.fs", "Program.fs", marks=pytest.mark.fsharp), ], indirect=["serena_agent"], )