F# first-class parity: document symbols, signature help, hierarchy routing fix (+95% sidecar coverage)#109
Merged
Merged
Conversation
…ting - [FS-DOCSYMBOL] textDocument/documentSymbol via FCS GetNavigationItems (parse-only; host routes .fs to the sidecar, .cs stays tree-sitter) - [FS-SIGHELP] textDocument/signatureHelp via FCS GetMethods (+ capability) - Fix extract_document_uri to also read params.item.uri so call-/type-hierarchy incoming/outgoing/super/subtype requests route to the F# sidecar instead of defaulting to C# (the bug behind empty F# incoming calls) - Sidecar IPC + direct tests and Rust unit tests for the new handlers - Coverage: F# sidecar 94.77%, sharplsp 92.12% (both above floors)
# Conflicts: # coverage-thresholds.json
MelbourneDeveloper
added a commit
that referenced
this pull request
Jun 22, 2026
Resolves squash-merge divergence: main's 5f6efbe is the #109 squash of this branch's earlier F# parity work, which the branch already carries as its original commits. All 6 conflicts had empty main-sides (verified no main-unique content), so kept this branch's superset versions and layered the analyzer additions on top. Merged tree builds clean (rust+clippy, .NET -warnaserror).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings F# to first-class parity for the remaining LSP outline/intelligence features and fixes a routing bug that silently broke F# call/type hierarchy follow-up requests. Also lands the F# sidecar coverage push (→95%) and the VS Code extension unit-test wave that were developed on this branch.
New F# features
[FS-DOCSYMBOL]textDocument/documentSymbol— F# document symbols via FCSGetNavigationItems(parse-only, so it responds without a cracked project). The host routes.fsto the F# sidecar;.csstays on tree-sitter. (document_symbols.rs, FSharpSymbols.fs)[FS-SIGHELP]textDocument/signatureHelp— overload signatures via FCSGetMethods; capability now advertised with(/,triggers. (signature_help.rs, FSharpSignature.fs)Bug fix — F# hierarchy routing
callHierarchy/incomingCalls/outgoingCallsandtypeHierarchy/super/subtypescarry the document URI insideparams.item, notparams.textDocument.extract_document_urionly checkedtextDocument/data, so these follow-up requests defaulted to the C# sidecar for.fsfiles — which is why F# incoming calls came back empty. Now it also readsparams.item.uri. (main.rs)Tests & coverage
sharplsp92.12%; all per-package floors held.Validation (local, matches CI)
make _lint-rust/_lint-zed/_lint-dotnet/ csharpier / prettier / eslint+tsc — greenmake _test-rust— 611 tests, coverage greenmake _test-dotnet— 660 tests (C# 316, F# 301, common 43), coverage greenmake _test-vsix— 1295 passing; the four target F# tests fixed